/**
 防抖函数（debounce）
 当持续触发事件时，一定时间段内没有再触发事件，事件处理函数才会执行一次，
 如果设定的时间到来之前，又一次触发了事件，就重新开始延时。

 核心思路:在规定时间内又一次触发了事件，就重新开始延时，若未触发第二次，则执行
 */


/**
 *
 * @param fn
 * @param delay
 * @returns {Function}
 */
function debounce(fn,delay){
    return function(){  // 注意箭头函数没有arguments，如果这里使用箭头函数，下面的arguments失效
        let args = arguments;
        //每一次事件触发，都会清除当前的timer,然后重写设置超时调用
        clearTimeout(fn.timer)
        fn.timer = setTimeout(()=>{
            fn.apply(this,args)
        },delay)
    }
}




